package org.ii.infrastructure.tiles.view;

/*
 * Copyright 2004-2008 the original author or authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed
 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and limitations under the License.
 */
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.webflow.execution.RequestContext;
import org.springframework.webflow.execution.RequestContextHolder;
import org.springframework.webflow.execution.View;

/**
 * This is a copy of Spring Webflows FlowAjaxTilesView without any changes except that this class extends our version of
 * AjaxTilesView. See {@link AjaxTilesView}.
 * 
 * @see org.springframework.js.ajax.tiles2.AjaxTilesView
 * @future tonje.broden 2009 11 11 Extend Springs Webflows AjaxTilesView when the necessary changes to integrate with Tiles 2.2.1.
 * are included in Spring Webflows version.
 * @author tonje.broden 2009 11 11
 */
public class FlowAjaxTilesView extends AjaxTilesView {
	@SuppressWarnings("unchecked")
	@Override
	protected String[] getRenderFragments(final Map model, final HttpServletRequest request, final HttpServletResponse response) {
		final RequestContext context = RequestContextHolder.getRequestContext();
		if (context == null) {
			return super.getRenderFragments(model, request, response);
		} else {
			final String[] fragments = (String[])context.getFlashScope().get(View.RENDER_FRAGMENTS_ATTRIBUTE);
			if (fragments == null) {
				return super.getRenderFragments(model, request, response);
			}
			return fragments;
		}
	}
}
